import axios from 'axios';
import router from '../router';
import {ElMessage} from 'element-plus'

export default function (options) {
    //配置每次发送请求都从sessionStorage中获取名字叫token的数据,
    //添加到请求头部的Authorization属性中
    //Object.assign用于合并对象的数据
    options.headers = Object.assign(
        {Authorization: localStorage.getItem('token')},
        options.headers || {}
    );
    //axios()   返回一个promise对象，用于异步请求
    //options是一个对象，其中包含了许多用于配置请求的参数，
    //例如请求的url、请求方法（GET、POST等）、请求头等
    return axios(options)
        .then(({status, data, statusText}) => {
            //该函数在请求成功并返回数据时被调用
            //status：HTTP状态码，例如200表示请求成功。
            //data：服务器返回的数据。
            // statusText：HTTP状态文本，例如"OK"表示请求成功。
            if (status == 200) {
                console.log(data);
                return data;
            } else {
                ElMessage.error('访问服务器出现异常')
            }
        })
        .then(({code, data, msg}) => {
            switch (code) {
                case 200:
                    if (msg)
                        ElMessage({
                            message: msg,
                            type: 'success',
                        })
                    return data;
                case 401:
                    if( msg)
                        msg='认证失败,稍后跳转到登录页面'
                    ElMessage({
                        message: msg,
                        type: 'warning',
                    })
                    setTimeout(function(){
                        sessionStorage.removeItem('token');
                        router.push("/login");
                    },1800);
                    break;
                default:
                if( msg)
                    ElMessage(msg)
            }
        }).catch(e => {
            ElMessage.error('系统出现异常,请联系管理员')
        });
}
